/**
 * 教师模块-2个子模块
 */
/**
 * 公共函数，外部可以查看/调用
 */

/**
 * 子模块1-通用
 */
pub mod teacher_common {
    pub fn teach() {
        println!("老师在上课");
        super::teacher_inner::learn();   //即使和被访问对象位于同个父亲下两个子模块下，两个子模块内的方法也只能访问对方公共的成员
        //super::teacher_inner::laugh(); //企图访问私有成员会编译错误的。
    }
}

/**
 * 子模块2-家庭
 */
pub mod teacher_family {}

/**
 * 内部模块-私有
 */
mod teacher_inner {
    /**
     * 即使处于同个层级，如果不定义为pub，其它同层级的方法也无法访问，因为毕竟属于不同模块
     */
    pub fn learn() {}
    fn laugh(){
        println!("老师在笑");
    }
}

pub fn go() {
    println!("教师模块");
}

pub use study::stduy_hard;
mod  study;